// This file is part of ICU4X. For terms of use, please see the file
// called LICENSE at the top level of the ICU4X source tree
// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).

//! Exposes the list of all known `DataMarker`s.
//!
//! This is modeled as a macro that accepts a callback macro of the shape:
//!
//! ```
//! macro_rules! cb {
//!     ($($marker_ty:ty:$marker:ident,)+ #[experimental] $($emarker_ty:ty:$emarker:ident,)+) => {
//!         // Do something for each marker, or each experimental marker
//!     };
//! }
//! ```
//!
//! Calling this as `registry!(cb);` evaluates `cb` with the list of markers.

#[macro_export]
/// See the crate docs.
macro_rules! registry(
    ($cb:ident) => {
        cb!(
            icu::calendar::provider::CalendarJapaneseModernV1: CalendarJapaneseModernV1,
            icu::calendar::provider::CalendarJapaneseExtendedV1: CalendarJapaneseExtendedV1,
            icu::calendar::provider::CalendarWeekV1: CalendarWeekV1,
            icu::casemap::provider::CaseMapV1: CaseMapV1,
            icu::casemap::provider::CaseMapUnfoldV1: CaseMapUnfoldV1,
            icu::collator::provider::CollationRootV1: CollationRootV1,
            icu::collator::provider::CollationTailoringV1: CollationTailoringV1,
            icu::collator::provider::CollationDiacriticsV1: CollationDiacriticsV1,
            icu::collator::provider::CollationJamoV1: CollationJamoV1,
            icu::collator::provider::CollationMetadataV1: CollationMetadataV1,
            icu::collator::provider::CollationReorderingV1: CollationReorderingV1,
            icu::collator::provider::CollationSpecialPrimariesV1: CollationSpecialPrimariesV1,
            icu::datetime::provider::time_zones::TimezoneNamesLocationsOverrideV1: TimezoneNamesLocationsOverrideV1,
            icu::datetime::provider::time_zones::TimezoneNamesLocationsRootV1: TimezoneNamesLocationsRootV1,
            icu::datetime::provider::time_zones::TimezoneNamesCitiesOverrideV1: TimezoneNamesCitiesOverrideV1,
            icu::datetime::provider::time_zones::TimezoneNamesCitiesRootV1: TimezoneNamesCitiesRootV1,
            icu::datetime::provider::time_zones::TimezoneNamesGenericLongV1: TimezoneNamesGenericLongV1,
            icu::datetime::provider::time_zones::TimezoneNamesStandardLongV1: TimezoneNamesStandardLongV1,
            icu::datetime::provider::time_zones::TimezoneNamesGenericShortV1: TimezoneNamesGenericShortV1,
            icu::datetime::provider::time_zones::TimezoneNamesSpecificLongV1: TimezoneNamesSpecificLongV1,
            icu::datetime::provider::time_zones::TimezoneNamesSpecificShortV1: TimezoneNamesSpecificShortV1,
            icu::datetime::provider::time_zones::TimezoneNamesEssentialsV1: TimezoneNamesEssentialsV1,
            icu::time::provider::TimezonePeriodsV1: TimezonePeriodsV1,
            icu::decimal::provider::DecimalDigitsV1: DecimalDigitsV1,
            icu::decimal::provider::DecimalSymbolsV1: DecimalSymbolsV1,
            icu::list::provider::ListAndV1: ListAndV1,
            icu::list::provider::ListOrV1: ListOrV1,
            icu::list::provider::ListUnitV1: ListUnitV1,
            icu::locale::provider::LocaleAliasesV1: LocaleAliasesV1,
            icu::locale::provider::LocaleExemplarCharactersAuxiliaryV1: LocaleExemplarCharactersAuxiliaryV1,
            icu::locale::provider::LocaleExemplarCharactersIndexV1: LocaleExemplarCharactersIndexV1,
            icu::locale::provider::LocaleExemplarCharactersMainV1: LocaleExemplarCharactersMainV1,
            icu::locale::provider::LocaleExemplarCharactersNumbersV1: LocaleExemplarCharactersNumbersV1,
            icu::locale::provider::LocaleExemplarCharactersPunctuationV1: LocaleExemplarCharactersPunctuationV1,
            icu::locale::provider::LocaleLikelySubtagsExtendedV1: LocaleLikelySubtagsExtendedV1,
            icu::locale::provider::LocaleLikelySubtagsLanguageV1: LocaleLikelySubtagsLanguageV1,
            icu::locale::provider::LocaleLikelySubtagsScriptRegionV1: LocaleLikelySubtagsScriptRegionV1,
            icu::locale::provider::LocaleParentsV1: LocaleParentsV1,
            icu::locale::provider::LocaleScriptDirectionV1: LocaleScriptDirectionV1,
            icu::normalizer::provider::NormalizerNfcV1: NormalizerNfcV1,
            icu::normalizer::provider::NormalizerNfdDataV1: NormalizerNfdDataV1,
            icu::normalizer::provider::NormalizerNfdTablesV1: NormalizerNfdTablesV1,
            icu::normalizer::provider::NormalizerNfkdDataV1: NormalizerNfkdDataV1,
            icu::normalizer::provider::NormalizerNfkdTablesV1: NormalizerNfkdTablesV1,
            icu::normalizer::provider::NormalizerNfdSupplementV1: NormalizerNfdSupplementV1,
            icu::normalizer::provider::NormalizerUts46DataV1: NormalizerUts46DataV1,
            icu::plurals::provider::PluralsCardinalV1: PluralsCardinalV1,
            icu::plurals::provider::PluralsOrdinalV1: PluralsOrdinalV1,
            icu::properties::provider::PropertyNameLongBidiClassV1: PropertyNameLongBidiClassV1,
            icu::properties::provider::PropertyNameLongNumericTypeV1: PropertyNameLongNumericTypeV1,
            icu::properties::provider::PropertyNameLongCanonicalCombiningClassV1: PropertyNameLongCanonicalCombiningClassV1,
            icu::properties::provider::PropertyNameLongEastAsianWidthV1: PropertyNameLongEastAsianWidthV1,
            icu::properties::provider::PropertyNameLongGeneralCategoryV1: PropertyNameLongGeneralCategoryV1,
            icu::properties::provider::PropertyNameLongGraphemeClusterBreakV1: PropertyNameLongGraphemeClusterBreakV1,
            icu::properties::provider::PropertyNameLongHangulSyllableTypeV1: PropertyNameLongHangulSyllableTypeV1,
            icu::properties::provider::PropertyNameLongIndicSyllabicCategoryV1: PropertyNameLongIndicSyllabicCategoryV1,
            icu::properties::provider::PropertyNameLongIndicConjunctBreakV1: PropertyNameLongIndicConjunctBreakV1,
            icu::properties::provider::PropertyNameLongJoiningTypeV1: PropertyNameLongJoiningTypeV1,
            icu::properties::provider::PropertyNameLongLineBreakV1: PropertyNameLongLineBreakV1,
            icu::properties::provider::PropertyNameLongScriptV1: PropertyNameLongScriptV1,
            icu::properties::provider::PropertyNameLongSentenceBreakV1: PropertyNameLongSentenceBreakV1,
            icu::properties::provider::PropertyNameLongVerticalOrientationV1: PropertyNameLongVerticalOrientationV1,
            icu::properties::provider::PropertyNameLongWordBreakV1: PropertyNameLongWordBreakV1,
            icu::properties::provider::PropertyNameParseBidiClassV1: PropertyNameParseBidiClassV1,
            icu::properties::provider::PropertyNameParseNumericTypeV1: PropertyNameParseNumericTypeV1,
            icu::properties::provider::PropertyNameParseCanonicalCombiningClassV1: PropertyNameParseCanonicalCombiningClassV1,
            icu::properties::provider::PropertyNameParseEastAsianWidthV1: PropertyNameParseEastAsianWidthV1,
            icu::properties::provider::PropertyNameParseGeneralCategoryMaskV1: PropertyNameParseGeneralCategoryMaskV1,
            icu::properties::provider::PropertyNameParseGeneralCategoryV1: PropertyNameParseGeneralCategoryV1,
            icu::properties::provider::PropertyNameParseGraphemeClusterBreakV1: PropertyNameParseGraphemeClusterBreakV1,
            icu::properties::provider::PropertyNameParseHangulSyllableTypeV1: PropertyNameParseHangulSyllableTypeV1,
            icu::properties::provider::PropertyNameParseIndicSyllabicCategoryV1: PropertyNameParseIndicSyllabicCategoryV1,
            icu::properties::provider::PropertyNameParseIndicConjunctBreakV1: PropertyNameParseIndicConjunctBreakV1,
            icu::properties::provider::PropertyNameParseJoiningTypeV1: PropertyNameParseJoiningTypeV1,
            icu::properties::provider::PropertyNameParseLineBreakV1: PropertyNameParseLineBreakV1,
            icu::properties::provider::PropertyNameParseScriptV1: PropertyNameParseScriptV1,
            icu::properties::provider::PropertyNameParseSentenceBreakV1: PropertyNameParseSentenceBreakV1,
            icu::properties::provider::PropertyNameParseVerticalOrientationV1: PropertyNameParseVerticalOrientationV1,
            icu::properties::provider::PropertyNameParseWordBreakV1: PropertyNameParseWordBreakV1,
            icu::properties::provider::PropertyNameShortBidiClassV1: PropertyNameShortBidiClassV1,
            icu::properties::provider::PropertyNameShortNumericTypeV1: PropertyNameShortNumericTypeV1,
            icu::properties::provider::PropertyNameShortCanonicalCombiningClassV1: PropertyNameShortCanonicalCombiningClassV1,
            icu::properties::provider::PropertyNameShortEastAsianWidthV1: PropertyNameShortEastAsianWidthV1,
            icu::properties::provider::PropertyNameShortGeneralCategoryV1: PropertyNameShortGeneralCategoryV1,
            icu::properties::provider::PropertyNameShortGraphemeClusterBreakV1: PropertyNameShortGraphemeClusterBreakV1,
            icu::properties::provider::PropertyNameShortHangulSyllableTypeV1: PropertyNameShortHangulSyllableTypeV1,
            icu::properties::provider::PropertyNameShortIndicSyllabicCategoryV1: PropertyNameShortIndicSyllabicCategoryV1,
            icu::properties::provider::PropertyNameShortIndicConjunctBreakV1: PropertyNameShortIndicConjunctBreakV1,
            icu::properties::provider::PropertyNameShortJoiningTypeV1: PropertyNameShortJoiningTypeV1,
            icu::properties::provider::PropertyNameShortLineBreakV1: PropertyNameShortLineBreakV1,
            icu::properties::provider::PropertyNameShortScriptV1: PropertyNameShortScriptV1,
            icu::properties::provider::PropertyNameShortVerticalOrientationV1: PropertyNameShortVerticalOrientationV1,
            icu::properties::provider::PropertyNameShortSentenceBreakV1: PropertyNameShortSentenceBreakV1,
            icu::properties::provider::PropertyNameShortWordBreakV1: PropertyNameShortWordBreakV1,
            icu::properties::provider::PropertyBinaryAlnumV1: PropertyBinaryAlnumV1,
            icu::properties::provider::PropertyBinaryAlphabeticV1: PropertyBinaryAlphabeticV1,
            icu::properties::provider::PropertyBinaryAsciiHexDigitV1: PropertyBinaryAsciiHexDigitV1,
            icu::properties::provider::PropertyBinaryBidiControlV1: PropertyBinaryBidiControlV1,
            icu::properties::provider::PropertyBinaryBidiMirroredV1: PropertyBinaryBidiMirroredV1,
            icu::properties::provider::PropertyBinaryBlankV1: PropertyBinaryBlankV1,
            icu::properties::provider::PropertyBinaryCasedV1: PropertyBinaryCasedV1,
            icu::properties::provider::PropertyBinaryCaseIgnorableV1: PropertyBinaryCaseIgnorableV1,
            icu::properties::provider::PropertyBinaryCaseSensitiveV1: PropertyBinaryCaseSensitiveV1,
            icu::properties::provider::PropertyBinaryChangesWhenCasefoldedV1: PropertyBinaryChangesWhenCasefoldedV1,
            icu::properties::provider::PropertyBinaryChangesWhenCasemappedV1: PropertyBinaryChangesWhenCasemappedV1,
            icu::properties::provider::PropertyBinaryChangesWhenLowercasedV1: PropertyBinaryChangesWhenLowercasedV1,
            icu::properties::provider::PropertyBinaryChangesWhenNfkcCasefoldedV1: PropertyBinaryChangesWhenNfkcCasefoldedV1,
            icu::properties::provider::PropertyBinaryChangesWhenTitlecasedV1: PropertyBinaryChangesWhenTitlecasedV1,
            icu::properties::provider::PropertyBinaryChangesWhenUppercasedV1: PropertyBinaryChangesWhenUppercasedV1,
            icu::properties::provider::PropertyBinaryDashV1: PropertyBinaryDashV1,
            icu::properties::provider::PropertyBinaryDefaultIgnorableCodePointV1: PropertyBinaryDefaultIgnorableCodePointV1,
            icu::properties::provider::PropertyBinaryDeprecatedV1: PropertyBinaryDeprecatedV1,
            icu::properties::provider::PropertyBinaryDiacriticV1: PropertyBinaryDiacriticV1,
            icu::properties::provider::PropertyBinaryEmojiComponentV1: PropertyBinaryEmojiComponentV1,
            icu::properties::provider::PropertyBinaryEmojiModifierBaseV1: PropertyBinaryEmojiModifierBaseV1,
            icu::properties::provider::PropertyBinaryEmojiModifierV1: PropertyBinaryEmojiModifierV1,
            icu::properties::provider::PropertyBinaryEmojiPresentationV1: PropertyBinaryEmojiPresentationV1,
            icu::properties::provider::PropertyBinaryEmojiV1: PropertyBinaryEmojiV1,
            icu::properties::provider::PropertyBinaryExtendedPictographicV1: PropertyBinaryExtendedPictographicV1,
            icu::properties::provider::PropertyBinaryExtenderV1: PropertyBinaryExtenderV1,
            icu::properties::provider::PropertyBinaryFullCompositionExclusionV1: PropertyBinaryFullCompositionExclusionV1,
            icu::properties::provider::PropertyBinaryGraphemeBaseV1: PropertyBinaryGraphemeBaseV1,
            icu::properties::provider::PropertyBinaryGraphemeExtendV1: PropertyBinaryGraphemeExtendV1,
            icu::properties::provider::PropertyBinaryGraphemeLinkV1: PropertyBinaryGraphemeLinkV1,
            icu::properties::provider::PropertyBinaryGraphV1: PropertyBinaryGraphV1,
            icu::properties::provider::PropertyBinaryHexDigitV1: PropertyBinaryHexDigitV1,
            icu::properties::provider::PropertyBinaryHyphenV1: PropertyBinaryHyphenV1,
            icu::properties::provider::PropertyBinaryIdCompatMathContinueV1: PropertyBinaryIdCompatMathContinueV1,
            icu::properties::provider::PropertyBinaryIdCompatMathStartV1: PropertyBinaryIdCompatMathStartV1,
            icu::properties::provider::PropertyBinaryIdContinueV1: PropertyBinaryIdContinueV1,
            icu::properties::provider::PropertyBinaryIdeographicV1: PropertyBinaryIdeographicV1,
            icu::properties::provider::PropertyBinaryIdsBinaryOperatorV1: PropertyBinaryIdsBinaryOperatorV1,
            icu::properties::provider::PropertyBinaryIdStartV1: PropertyBinaryIdStartV1,
            icu::properties::provider::PropertyBinaryIdsTrinaryOperatorV1: PropertyBinaryIdsTrinaryOperatorV1,
            icu::properties::provider::PropertyBinaryIdsUnaryOperatorV1: PropertyBinaryIdsUnaryOperatorV1,
            icu::properties::provider::PropertyBinaryJoinControlV1: PropertyBinaryJoinControlV1,
            icu::properties::provider::PropertyBinaryLogicalOrderExceptionV1: PropertyBinaryLogicalOrderExceptionV1,
            icu::properties::provider::PropertyBinaryLowercaseV1: PropertyBinaryLowercaseV1,
            icu::properties::provider::PropertyBinaryMathV1: PropertyBinaryMathV1,
            icu::properties::provider::PropertyBinaryModifierCombiningMarkV1: PropertyBinaryModifierCombiningMarkV1,
            icu::properties::provider::PropertyBinaryNfcInertV1: PropertyBinaryNfcInertV1,
            icu::properties::provider::PropertyBinaryNfdInertV1: PropertyBinaryNfdInertV1,
            icu::properties::provider::PropertyBinaryNfkcInertV1: PropertyBinaryNfkcInertV1,
            icu::properties::provider::PropertyBinaryNfkdInertV1: PropertyBinaryNfkdInertV1,
            icu::properties::provider::PropertyBinaryNoncharacterCodePointV1: PropertyBinaryNoncharacterCodePointV1,
            icu::properties::provider::PropertyBinaryPatternSyntaxV1: PropertyBinaryPatternSyntaxV1,
            icu::properties::provider::PropertyBinaryPatternWhiteSpaceV1: PropertyBinaryPatternWhiteSpaceV1,
            icu::properties::provider::PropertyBinaryPrependedConcatenationMarkV1: PropertyBinaryPrependedConcatenationMarkV1,
            icu::properties::provider::PropertyBinaryPrintV1: PropertyBinaryPrintV1,
            icu::properties::provider::PropertyBinaryQuotationMarkV1: PropertyBinaryQuotationMarkV1,
            icu::properties::provider::PropertyBinaryRadicalV1: PropertyBinaryRadicalV1,
            icu::properties::provider::PropertyBinaryRegionalIndicatorV1: PropertyBinaryRegionalIndicatorV1,
            icu::properties::provider::PropertyBinarySegmentStarterV1: PropertyBinarySegmentStarterV1,
            icu::properties::provider::PropertyBinarySentenceTerminalV1: PropertyBinarySentenceTerminalV1,
            icu::properties::provider::PropertyBinarySoftDottedV1: PropertyBinarySoftDottedV1,
            icu::properties::provider::PropertyBinaryTerminalPunctuationV1: PropertyBinaryTerminalPunctuationV1,
            icu::properties::provider::PropertyBinaryUnifiedIdeographV1: PropertyBinaryUnifiedIdeographV1,
            icu::properties::provider::PropertyBinaryUppercaseV1: PropertyBinaryUppercaseV1,
            icu::properties::provider::PropertyBinaryVariationSelectorV1: PropertyBinaryVariationSelectorV1,
            icu::properties::provider::PropertyBinaryWhiteSpaceV1: PropertyBinaryWhiteSpaceV1,
            icu::properties::provider::PropertyBinaryXdigitV1: PropertyBinaryXdigitV1,
            icu::properties::provider::PropertyBinaryXidContinueV1: PropertyBinaryXidContinueV1,
            icu::properties::provider::PropertyBinaryXidStartV1: PropertyBinaryXidStartV1,
            icu::properties::provider::PropertyEnumBidiClassV1: PropertyEnumBidiClassV1,
            icu::properties::provider::PropertyEnumNumericTypeV1: PropertyEnumNumericTypeV1,
            icu::properties::provider::PropertyEnumCanonicalCombiningClassV1: PropertyEnumCanonicalCombiningClassV1,
            icu::properties::provider::PropertyEnumEastAsianWidthV1: PropertyEnumEastAsianWidthV1,
            icu::properties::provider::PropertyEnumGeneralCategoryV1: PropertyEnumGeneralCategoryV1,
            icu::properties::provider::PropertyEnumGraphemeClusterBreakV1: PropertyEnumGraphemeClusterBreakV1,
            icu::properties::provider::PropertyEnumHangulSyllableTypeV1: PropertyEnumHangulSyllableTypeV1,
            icu::properties::provider::PropertyEnumIndicConjunctBreakV1: PropertyEnumIndicConjunctBreakV1,
            icu::properties::provider::PropertyEnumIndicSyllabicCategoryV1: PropertyEnumIndicSyllabicCategoryV1,
            icu::properties::provider::PropertyEnumJoiningTypeV1: PropertyEnumJoiningTypeV1,
            icu::properties::provider::PropertyEnumLineBreakV1: PropertyEnumLineBreakV1,
            icu::properties::provider::PropertyEnumScriptV1: PropertyEnumScriptV1,
            icu::properties::provider::PropertyEnumSentenceBreakV1: PropertyEnumSentenceBreakV1,
            icu::properties::provider::PropertyEnumVerticalOrientationV1: PropertyEnumVerticalOrientationV1,
            icu::properties::provider::PropertyEnumWordBreakV1: PropertyEnumWordBreakV1,
            icu::properties::provider::PropertyEnumBidiMirroringGlyphV1: PropertyEnumBidiMirroringGlyphV1,
            icu::properties::provider::PropertyBinaryBasicEmojiV1: PropertyBinaryBasicEmojiV1,
            icu::properties::provider::PropertyScriptWithExtensionsV1: PropertyScriptWithExtensionsV1,
            icu::segmenter::provider::SegmenterDictionaryExtendedV1: SegmenterDictionaryExtendedV1,
            icu::segmenter::provider::SegmenterDictionaryAutoV1: SegmenterDictionaryAutoV1,
            icu::segmenter::provider::SegmenterBreakGraphemeClusterV1: SegmenterBreakGraphemeClusterV1,
            icu::segmenter::provider::SegmenterBreakLineV1: SegmenterBreakLineV1,
            icu::segmenter::provider::SegmenterLstmAutoV1: SegmenterLstmAutoV1,
            icu::segmenter::provider::SegmenterBreakSentenceOverrideV1: SegmenterBreakSentenceOverrideV1,
            icu::segmenter::provider::SegmenterBreakSentenceV1: SegmenterBreakSentenceV1,
            icu::segmenter::provider::SegmenterBreakWordOverrideV1: SegmenterBreakWordOverrideV1,
            icu::segmenter::provider::SegmenterBreakWordV1: SegmenterBreakWordV1,
            icu::time::provider::iana::TimezoneIdentifiersIanaExtendedV1: TimezoneIdentifiersIanaExtendedV1,
            icu::time::provider::iana::TimezoneIdentifiersIanaCoreV1: TimezoneIdentifiersIanaCoreV1,
            icu::time::provider::windows::TimezoneIdentifiersWindowsV1: TimezoneIdentifiersWindowsV1,
            icu::datetime::provider::neo::DatetimeNamesWeekdayV1: DatetimeNamesWeekdayV1,
            icu::datetime::provider::neo::DatetimeNamesDayperiodV1: DatetimeNamesDayperiodV1,
            icu::datetime::provider::neo::DatetimePatternsGlueV1: DatetimePatternsGlueV1,
            icu::datetime::provider::neo::DatetimeNamesYearBuddhistV1: DatetimeNamesYearBuddhistV1,
            icu::datetime::provider::neo::DatetimeNamesYearChineseV1: DatetimeNamesYearChineseV1,
            icu::datetime::provider::neo::DatetimeNamesYearCopticV1: DatetimeNamesYearCopticV1,
            icu::datetime::provider::neo::DatetimeNamesYearDangiV1: DatetimeNamesYearDangiV1,
            icu::datetime::provider::neo::DatetimeNamesYearEthiopianV1: DatetimeNamesYearEthiopianV1,
            icu::datetime::provider::neo::DatetimeNamesYearGregorianV1: DatetimeNamesYearGregorianV1,
            icu::datetime::provider::neo::DatetimeNamesYearHebrewV1: DatetimeNamesYearHebrewV1,
            icu::datetime::provider::neo::DatetimeNamesYearIndianV1: DatetimeNamesYearIndianV1,
            icu::datetime::provider::neo::DatetimeNamesYearHijriV1: DatetimeNamesYearHijriV1,
            icu::datetime::provider::neo::DatetimeNamesYearJapaneseV1: DatetimeNamesYearJapaneseV1,
            icu::datetime::provider::neo::DatetimeNamesYearJapanextV1: DatetimeNamesYearJapanextV1,
            icu::datetime::provider::neo::DatetimeNamesYearPersianV1: DatetimeNamesYearPersianV1,
            icu::datetime::provider::neo::DatetimeNamesYearRocV1: DatetimeNamesYearRocV1,
            icu::datetime::provider::neo::DatetimeNamesMonthBuddhistV1: DatetimeNamesMonthBuddhistV1,
            icu::datetime::provider::neo::DatetimeNamesMonthChineseV1: DatetimeNamesMonthChineseV1,
            icu::datetime::provider::neo::DatetimeNamesMonthCopticV1: DatetimeNamesMonthCopticV1,
            icu::datetime::provider::neo::DatetimeNamesMonthDangiV1: DatetimeNamesMonthDangiV1,
            icu::datetime::provider::neo::DatetimeNamesMonthEthiopianV1: DatetimeNamesMonthEthiopianV1,
            icu::datetime::provider::neo::DatetimeNamesMonthGregorianV1: DatetimeNamesMonthGregorianV1,
            icu::datetime::provider::neo::DatetimeNamesMonthHebrewV1: DatetimeNamesMonthHebrewV1,
            icu::datetime::provider::neo::DatetimeNamesMonthIndianV1: DatetimeNamesMonthIndianV1,
            icu::datetime::provider::neo::DatetimeNamesMonthHijriV1: DatetimeNamesMonthHijriV1,
            icu::datetime::provider::neo::DatetimeNamesMonthJapaneseV1: DatetimeNamesMonthJapaneseV1,
            icu::datetime::provider::neo::DatetimeNamesMonthJapanextV1: DatetimeNamesMonthJapanextV1,
            icu::datetime::provider::neo::DatetimeNamesMonthPersianV1: DatetimeNamesMonthPersianV1,
            icu::datetime::provider::neo::DatetimeNamesMonthRocV1: DatetimeNamesMonthRocV1,
            icu::datetime::provider::DatetimePatternsDateBuddhistV1: DatetimePatternsDateBuddhistV1,
            icu::datetime::provider::DatetimePatternsDateChineseV1: DatetimePatternsDateChineseV1,
            icu::datetime::provider::DatetimePatternsDateCopticV1: DatetimePatternsDateCopticV1,
            icu::datetime::provider::DatetimePatternsDateDangiV1: DatetimePatternsDateDangiV1,
            icu::datetime::provider::DatetimePatternsDateEthiopianV1: DatetimePatternsDateEthiopianV1,
            icu::datetime::provider::DatetimePatternsDateGregorianV1: DatetimePatternsDateGregorianV1,
            icu::datetime::provider::DatetimePatternsDateHebrewV1: DatetimePatternsDateHebrewV1,
            icu::datetime::provider::DatetimePatternsDateIndianV1: DatetimePatternsDateIndianV1,
            icu::datetime::provider::DatetimePatternsDateHijriV1: DatetimePatternsDateHijriV1,
            icu::datetime::provider::DatetimePatternsDateJapaneseV1: DatetimePatternsDateJapaneseV1,
            icu::datetime::provider::DatetimePatternsDateJapanextV1: DatetimePatternsDateJapanextV1,
            icu::datetime::provider::DatetimePatternsDatePersianV1: DatetimePatternsDatePersianV1,
            icu::datetime::provider::DatetimePatternsDateRocV1: DatetimePatternsDateRocV1,
            icu::datetime::provider::DatetimePatternsTimeV1: DatetimePatternsTimeV1,
            #[experimental]
            icu::experimental::compactdecimal::provider::LongCompactDecimalFormatDataV1: LongCompactDecimalFormatDataV1,
            icu::experimental::compactdecimal::provider::ShortCompactDecimalFormatDataV1: ShortCompactDecimalFormatDataV1,
            icu::experimental::dimension::provider::currency::compact::ShortCurrencyCompactV1: ShortCurrencyCompactV1,
            icu::experimental::dimension::provider::currency::displayname::CurrencyDisplaynameV1: CurrencyDisplaynameV1,
            icu::experimental::dimension::provider::currency::essentials::CurrencyEssentialsV1: CurrencyEssentialsV1,
            icu::experimental::dimension::provider::currency::patterns::CurrencyPatternsDataV1: CurrencyPatternsDataV1,
            icu::experimental::dimension::provider::currency::extended::CurrencyExtendedDataV1: CurrencyExtendedDataV1,
            icu::experimental::dimension::provider::currency::fractions::CurrencyFractionsV1: CurrencyFractionsV1,
            icu::experimental::dimension::provider::percent::PercentEssentialsV1: PercentEssentialsV1,
            icu::experimental::dimension::provider::units::display_names::UnitsDisplayNamesV1: UnitsDisplayNamesV1,
            icu::experimental::dimension::provider::units::categorized_display_names::UnitsNamesAreaCoreV1: UnitsNamesAreaCoreV1,
            icu::experimental::dimension::provider::units::categorized_display_names::UnitsNamesAreaExtendedV1: UnitsNamesAreaExtendedV1,
            icu::experimental::dimension::provider::units::categorized_display_names::UnitsNamesAreaOutlierV1: UnitsNamesAreaOutlierV1,
            icu::experimental::dimension::provider::units::categorized_display_names::UnitsNamesDurationCoreV1: UnitsNamesDurationCoreV1,
            icu::experimental::dimension::provider::units::categorized_display_names::UnitsNamesDurationExtendedV1: UnitsNamesDurationExtendedV1,
            icu::experimental::dimension::provider::units::categorized_display_names::UnitsNamesDurationOutlierV1: UnitsNamesDurationOutlierV1,
            icu::experimental::dimension::provider::units::categorized_display_names::UnitsNamesLengthCoreV1: UnitsNamesLengthCoreV1,
            icu::experimental::dimension::provider::units::categorized_display_names::UnitsNamesLengthExtendedV1: UnitsNamesLengthExtendedV1,
            icu::experimental::dimension::provider::units::categorized_display_names::UnitsNamesLengthOutlierV1: UnitsNamesLengthOutlierV1,
            icu::experimental::dimension::provider::units::categorized_display_names::UnitsNamesMassCoreV1: UnitsNamesMassCoreV1,
            icu::experimental::dimension::provider::units::categorized_display_names::UnitsNamesMassExtendedV1: UnitsNamesMassExtendedV1,
            icu::experimental::dimension::provider::units::categorized_display_names::UnitsNamesMassOutlierV1: UnitsNamesMassOutlierV1,
            icu::experimental::dimension::provider::units::categorized_display_names::UnitsNamesVolumeCoreV1: UnitsNamesVolumeCoreV1,
            icu::experimental::dimension::provider::units::categorized_display_names::UnitsNamesVolumeExtendedV1: UnitsNamesVolumeExtendedV1,
            icu::experimental::dimension::provider::units::categorized_display_names::UnitsNamesVolumeOutlierV1: UnitsNamesVolumeOutlierV1,
            icu::experimental::dimension::provider::units::essentials::UnitsEssentialsV1: UnitsEssentialsV1,
            icu::experimental::duration::provider::DigitalDurationDataV1: DigitalDurationDataV1,
            icu::experimental::displaynames::provider::RegionDisplayNamesV1: RegionDisplayNamesV1,
            icu::experimental::displaynames::provider::LanguageDisplayNamesV1: LanguageDisplayNamesV1,
            icu::experimental::displaynames::provider::LocaleDisplayNamesV1: LocaleDisplayNamesV1,
            icu::experimental::displaynames::provider::ScriptDisplayNamesV1: ScriptDisplayNamesV1,
            icu::experimental::displaynames::provider::VariantDisplayNamesV1: VariantDisplayNamesV1,
            icu::experimental::measure::provider::UnitIdsV1: UnitIdsV1,
            icu::experimental::relativetime::provider::LongSecondRelativeV1: LongSecondRelativeV1,
            icu::experimental::relativetime::provider::ShortSecondRelativeV1: ShortSecondRelativeV1,
            icu::experimental::relativetime::provider::NarrowSecondRelativeV1: NarrowSecondRelativeV1,
            icu::experimental::relativetime::provider::LongMinuteRelativeV1: LongMinuteRelativeV1,
            icu::experimental::relativetime::provider::ShortMinuteRelativeV1: ShortMinuteRelativeV1,
            icu::experimental::relativetime::provider::NarrowMinuteRelativeV1: NarrowMinuteRelativeV1,
            icu::experimental::relativetime::provider::LongHourRelativeV1: LongHourRelativeV1,
            icu::experimental::relativetime::provider::ShortHourRelativeV1: ShortHourRelativeV1,
            icu::experimental::relativetime::provider::NarrowHourRelativeV1: NarrowHourRelativeV1,
            icu::experimental::relativetime::provider::LongDayRelativeV1: LongDayRelativeV1,
            icu::experimental::relativetime::provider::ShortDayRelativeV1: ShortDayRelativeV1,
            icu::experimental::relativetime::provider::NarrowDayRelativeV1: NarrowDayRelativeV1,
            icu::experimental::relativetime::provider::LongWeekRelativeV1: LongWeekRelativeV1,
            icu::experimental::relativetime::provider::ShortWeekRelativeV1: ShortWeekRelativeV1,
            icu::experimental::relativetime::provider::NarrowWeekRelativeV1: NarrowWeekRelativeV1,
            icu::experimental::relativetime::provider::LongMonthRelativeV1: LongMonthRelativeV1,
            icu::experimental::relativetime::provider::ShortMonthRelativeV1: ShortMonthRelativeV1,
            icu::experimental::relativetime::provider::NarrowMonthRelativeV1: NarrowMonthRelativeV1,
            icu::experimental::relativetime::provider::LongQuarterRelativeV1: LongQuarterRelativeV1,
            icu::experimental::relativetime::provider::ShortQuarterRelativeV1: ShortQuarterRelativeV1,
            icu::experimental::relativetime::provider::NarrowQuarterRelativeV1: NarrowQuarterRelativeV1,
            icu::experimental::relativetime::provider::LongYearRelativeV1: LongYearRelativeV1,
            icu::experimental::relativetime::provider::ShortYearRelativeV1: ShortYearRelativeV1,
            icu::experimental::relativetime::provider::NarrowYearRelativeV1: NarrowYearRelativeV1,
            icu::experimental::personnames::provider::PersonNamesFormatV1: PersonNamesFormatV1,
            icu::experimental::transliterate::provider::TransliteratorRulesV1: TransliteratorRulesV1,
            icu::experimental::units::provider::UnitsInfoV1: UnitsInfoV1,
            icu::plurals::provider::PluralsRangesV1: PluralsRangesV1,
        );
    }
);

macro_rules! cb {
    ($($marker_ty:ty:$marker:ident,)+ #[experimental] $($emarker_ty:ty:$emarker:ident,)+) => {
        #[test]
        fn no_marker_collisions() {
            use icu_provider::prelude::*;

            let mut map = std::collections::BTreeMap::new();
            let mut failed = false;
            for marker in [
                $(
                    <$marker_ty>::INFO,
                )+
                $(
                    <$emarker_ty>::INFO,
                )+
            ] {
                if let Some(colliding_marker) = map.insert(marker.id.hashed(), marker) {
                    println!(
                        "{:?} and {:?} collide at {:?}",
                        marker.id,
                        colliding_marker.id,
                        marker.id.hashed(),
                    );
                    failed = true;
                }
            }
            if failed {
                panic!();
            }
        }
    }
}

registry!(cb);
